const arr2 =[1,2,3,[4,5,[6,7,[8]]],3,3,[4,5,[6,7,[8,[9]]]]]

// Array.prototype.flat = function(){
//     const self = this
//     function flat(arr,result = []){
//         for(let i = 0; i < arr.length; i++){
//             let item = arr[i]
//             if(Array.isArray(item)){
//                 flat(item,result)
//             }else{
//                 result.push(item)
//             }
//         }
//         return result
//     }
//     return flat(self)
// } 

// 带层级的 
Array.prototype.flat = function(deep){
    const self = this
    function flat(arr,result = [],currentDeep=1){
        for(let i = 0; i < arr.length; i++){
            let item = arr[i]
            if(Array.isArray(item) && currentDeep <= deep){
                flat(item,result,currentDeep+1)
            }else{
                result.push(item)
            }
        }
        return result
    }
    return flat(self)
} 
console.log(arr2.flat(3))